---
title: ProcessOB3PRetention overview
summary: Purpose, invocation, scheduling, and capabilities of the ProcessOB3PRetention console application.
status: draft
owner: Documents
last_reviewed: 2026-10-06
---

# ProcessOB3PRetention overview

ProcessOB3PRetention determines which third-party claims are eligible for document deletion under retention policies and triggers that deletion in OnBase. It asks the Imaging API for retention records due on a given month, day, and year, sends the claim numbers to the OnBase Third Party Archival Service in batches, and then marks the retention records as processed.

## Purpose

- Select third-party claims whose retention period has elapsed for the processing date, as decided by the Imaging API.
- Submit those claim numbers to OnBase (`ArchiveDocument` SOAP operation) so that OnBase can perform the document deletion for the listed claims.*
- Record completion by marking the Imaging API retention records as processed so they are not selected again.

The application makes no eligibility decision itself: the retention policy is evaluated server-side by the Imaging API endpoint. The actual document deletion occurs downstream inside OnBase and is not visible from this repository.

## Invocation

```text
ProcessOB3PRetention.exe -Month 3 -Day 31 -Year 2026
```

The executable is started by a scheduler (the README names the Automic job plan `ARCH.ONBASE.PROCESS.3P.RETENTION.EOM`). All three arguments are optional; a run with no arguments processes the current local date.

## Scheduling

| Attribute | Value |
| --- | --- |
| Frequency | LAST.DAY.OF.MONTH in CALE.SAIF calendar in AE |
| Scheduler | Automic (UC4/AE) job plan `ARCH.ONBASE.PROCESS.3P.RETENTION.EOM` |
| Expected runtime | 10PM on LAST.DAY.OF.MONTH |
| Upstream dependencies | JSCH.ARCHITECTURE in AE Client 0100 |

The `EOM` suffix of the job plan name indicates an end-of-month run. This ARCH.ONBASE.PROCESS.3P.RETENTION.EOM workflow in Automic currently has two steps/jobs: Step 1 executes this ProcessOB3PRetention console application via the ARCH.ONBASE.PROCESS.3P.RETENTION job. It does not pass any explicit `Day`, `Month`, or `Year` values; so, they get set to default values in code. The `scheduleDate` parameter in the release pipeline controls deployment timing only, not job execution. Step 2 of the workflow is AE job ARCH.ONBASE.NOTIFY.POST.3P.RETENTION - which executes the SendOB3PRetentionNotification console application afterwards.

## Command-line arguments

Arguments are named, not positional. The full contract, including syntax forms and validation behavior, is on the [Arguments](arguments.md) page.

| Argument | Type | Required | Default | Purpose |
| --- | --- | --- | --- | --- |
| `Day` | `int` | No | Current day of month | Day of the processing date sent to the Imaging API |
| `Month` | `int` | No | Current month | Month of the processing date sent to the Imaging API |
| `Year` | `int` | No | Current year | Year of the processing date sent to the Imaging API |

## Capability summary

| Capability | Owning component | Description |
| --- | --- | --- |
| Retrieve claims due for retention | `ImagingApiClient` | `GET` of the `ThirdPartyRetention/toProcess` endpoint for the processing date |
| Submit claims to OnBase in batches | `OnBaseService` | One `ArchiveDocument` SOAP call per batch, carrying the batch's claim numbers as a keyword collection |
| Mark retention records processed | `ImagingApiClient` | `PUT` of the batch's retention ids to the `processed/mark` endpoint |
| Batch size control | `ThirdPartyRetentionProcessor` | Batch size read from the Environment API, falling back to 100 |

The end-to-end flow is documented in [Process third-party retention](operations/process-third-party-retention.md). The consumed OnBase SOAP proxy is documented separately in the [OBRetentionService client documentation](../../clients/obretentionservice/index.md).

## Related documentation

| Documentation | Description |
| --- | --- |
| [Index](index.md) | Documentation entry point |
| [Architecture](architecture.md) | Components and composition root |
| [Run lifecycle](run-lifecycle.md) | Execution flow and exit codes |
| [Arguments](arguments.md) | Full argument contract |
| [Configuration](configuration.md) | Settings and environment variables |
| [Dependencies](dependencies.md) | Packages and API dependencies |
| [Operations and processes](operations-processes.md) | Operation catalog |
| [Business rules](business-rules.md) | Rules enforced during processing |
| [Operational runbook](operational-runbook.md) | Run and recovery procedures |
| [Tech debt](tech-debt.md) | Technical debt observations |

> **Note:** Statements marked with `*` were inferred from code structure, naming
> conventions, or contextual evidence where direct confirmation was not available
> in source artifacts. Statements marked with `**` could not be confirmed; treat
> as unknown until verified.

## Sources

- `README.md`
- `ProcessOB3PRetention/Program.cs`
- `ProcessOB3PRetention/ArgContainer.cs`
- `ProcessOB3PRetention/ThirdPartyRetentionProcessor.cs`
- `ProcessOB3PRetention/Services/ImagingApiClient.cs`
- `ProcessOB3PRetention/Services/OnBaseService.cs`
- `Pipelines/release.yml`
